package org.llc.flink.study.example


object Fun1 {
  def main(args: Array[String]): Unit = {
    // 高阶函数的学习
    // 可以把一个函数直接赋给一个变量,但是不执行函数 _ (空格 + 下划线 方法转函数)
    val fun = myPrint _
    fun()

    /**
      * 请将List(3,5,7) 中的所有元素都 * 2
      * 将其结果放到一个新的集合中返回
      * 即返回一个新的List(6,10,14), 请编写程序实现
      **/
    val res = test(sum, 3.5)
    println("res = " + res)

  }

  /**
    * 普通的函数
    */
  def myPrint(): Unit = {
    println("Hello Scala!")
  }

  /**
    * 高阶函数
    * @param fun 该方法可以接收一个函数，其函数可以接收Double,返回Double
    * @param n1 普通参数Double类型
    * @return fun(n1) 执行你传入的函数
    */
  def test(fun: Double => Double, n1: Double) = {
    fun(n1)
  }

  /**
    * 普通的函数
    * @param d 接受一个Double
    * @return 返回Double
    */
  def sum(d: Double): Double = {
    d + d
  }

}
